perm filename DD.DOC[DD,BGB] blob sn#054433 filedate 1973-07-18 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00006 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	  DDCALL and DDJOB  -  A Prototype of a Data Disc Display Spooler.
 00004 00003	I. GRAPHICS.
 00005 00004	SUMMARY OF DDCALL ROUTINES
 00009 00005	                          SPECIFIC WINDOWS
 00012 00006	                       THE GRAPHICS PRIMITIVES
 00014 ENDMK
⊗;
  DDCALL and DDJOB  -  A Prototype of a Data Disc Display Spooler.

                          Bruce g. Baumgart


ABSTRACT

	DDJOB creates Data Disc buffers of graphics and TV  pictures.
DDJOB  is  bit  raster  oriented and follows the clear white light of
windowing.      Bit rasters provide a common ground on  which  images
and  graphics  can  be  combined.  Windows provide a way to deal with
image  addressing   (physical   and   logical),   zooming,   scaling,
magnification,   clipping,   cropping,   aspect   ratios  and  buffer
allocation.

	DDJOB waits for letters from DDCALL.    The  DDCALL  routines
are  not III compatible because I have never liked the III very much,
a program that reads III buffers and  sends  appropriate  letters  to

The require source file statement for declaring these ruotines is:

	REQUIRE "DD[DD,BGB]" SOURCE_FILE;

At present the mechanisms in DDCALL will load a  distinct  DDJOB  for
each  project programmer as it becomes necessary. For programmer XXX,
the DDJOB is renamed to DDJXXX and is run thru PTY.
I. GRAPHICS.

BEGIN	"TEST1"
	REQUIRE "DD[DD,BGB]" SOURCE_FILE;
	SETDWN(40,40,350,350);
	SETLWN(0,0,1,1);
ERASDD;
	AI(-1,-1);
	AV( 1,-1);
	AV( 1, 1);
	AV(-1, 1);
	AV(-1,-1);
	AI(-0.5,0);AV(+0.5,0);
	AI(0,-0.5);AV(0,+0.5);
	AI(0,0);ARC(0.75, 6.3, 0);
	SHOWDD(0);
	DDSTR(0.25, 0.5, 0, "DISPLAY EXAMPLE !");
	INCHRW;
END	"TEST1"

	The above program will display a cross within a circle within
a rectangle with a label on your local Data Disc Screen.
SUMMARY OF DDCALL ROUTINES

ERASTV;		Erases the six video synthesizer channels.
ERASDD;		Erases your local data disc screen.

DPYDD (STRING File; INTEGER ARRAY Swindo, Owindo, Levels);	

	DPYDD gets a TV file from the 2314 and repacks  the  bits  by
levels  and  stores  the  TV  image  and  the  repacked  image on the
Librascope in order to expedite subsequent DPYDD's.    Swindo  is  an
integer  array  [1:4]  containing  the source window:  sx,sy,sdx,sdy.
Owindo is an  integer  array  [1:3]  containing  the  object  window:
ox,oy,magpow. (Windows are explained on page three).

	The Levels array [1:6] contains channel numbers. hannel #0 is
a no operation.   DPYDD  always  sets  the  logical  window  and  the
physical  destination  window,  so  that a DPYDD followed by graphics
primitives results in a combined image properly clipped and scaled.

SETLWN(real lx,ly,ldx,ldy); Initializes the Graphics Logical Window.
SETDWN(integer dr,dc,dm,dn ); Initializes the Physical Destination Window.
SETWND(real array lwn;integer array dwn); Combines SETLWN and SETDWN.

The graphics primitives:(details given on page four)
AI(X,Y);AV(X,Y);DOT(X,Y);ARC(R,L,A);RADIAL(R1,R2,A);DMS(dddmmss);

DDSTR (x,y,chn,str);	Data Disc string at x,y.
DDSTRC(r,c,chn,str);	Data Disc string at row column.
DDTYPE(Y,GLITCHES,LINES);

SHOWDD(INTEGER  levchn);  Outputs  a  graphics image. Negative levchn
IOR's the image onto the  DD,  Positive  levchn  causes  replacement.
Levchn  itself should be a two digit octal number, Level concatenated
with Channel.

DRUMDD(frame);
	Positive frame numbers cause the next  dd  buffers  shown  by
DPYDD  or  SHOWDD to go to the librascope. Negative frame numbers get
the frame from the librascope and display it.  The zero frame flushes
the  librascope  (well you see there is this chain on the back of the
librascope). Ordinary mortals are limited to 150  frames,  since  the
librascope  can  only  hold  300 frames in all.  Drum frames are like
glass and even if The Ernest Television Crossbar Switch should happen
to  work,  we will still be up against the wall for tracks, so IORing
tracks thru Ernest is not a solution to the glass problem  since  the
number of tracks is so ridiculously small.

TVSEG(file,segname);
	Gets a TV file from the 2314  or  from  the  librascope,  and
makes  an upper segment out of it. Null string segnam flushs the file
off the librascope, null string file name flushs the segment.
                          SPECIFIC WINDOWS

TV file window frame  -  TVM & TVN forever 216 by 288.

	TV  images  contain  so  many rows, TVM, and so many columns,
TVN, and consequently image manipulations must be restricted to these
bounds.  The  number  of  rows and columns is computed from the image
file header, unusually large or negative counts cause the file to  be
ignored.  At our present primitive state of cameras, digitization and
memory I have come to prefer images which contain  216  rows  of  288
columns   of  sixbits  per  pixel,  this  standard  arises  from  the
convenience of dimensions that are divisible by as  many  factors  of
two and three as possible. All images are expanded or truncated to
fit into 216 rows by 288 columns by 6 bits.

Data Disc window frame  -  DDM & DDN forever 480 by 512.

	The data disc can display 482 lines of 512 bits each, however
for the sake of divisibility by four DDM is only 480 lines.

Source Window   -  INTEGER SX,SY,SDX,SDY;

	The source window defines a subset of a TV file.

Object Window  -  INTEGER OX,OY,MAGPOW.

	The object window defines a mapping from a TV file  onto  the
data  disc  screen. OX,OY is where the center of the source window is
to be placed on the screen.  MAGPOW is the logrithm  base  two  of  a
magnification  factor, so each source image pixel gets mapped into
(2↑MAGPOW)↑2 object image pixels.  No interpolation or  smoothing  is
done.

Logical Window  -  REAL LX,LY,LDX,LDY;

	The logical window defines the address space for the graphics
primitives: DOT, AI, AV, ARC, RADIAL and DDSTR.  

Data Disc Physical Window or Destination Window  -  INTEGER DR,DC,DM,DN.

	The physical destination window defines the patch of data disc
screen in which the logical window appears.
                       THE GRAPHICS PRIMITIVES


AI(X,Y).................Position Pseudo Beam.
AV(X,Y).................Absolute Vector to new pseudo beam position.
DOT(X,Y)................Absolute point, doesn't affect beam position.

ARC(R,L,A);
	ARC displays an arc of  radius  R  centered  about  the  most
recent  beam position. L is the arc's directed length from a starting
point A radians from the positive X axis, L & A are  in  radians  and
CCW is the positive orientation.

RADIAL (R1,R2,A);
	RADIAL  displays  the  line  segment  which radiates from the
pseudo beam position in the direction A, and lies between the  radii
R1 and R2, the pseudo beam remains fixed unless R1=R2;

Real DMS (integer dddmmss)
	DMS  converts  from  degrees, minutes and seconds to radians.
The argument is a decimal integer ((ddd*100+mm)*100+ss.